[org 0x7c00]
; 清屏
xchg bx, bx
mov ax, 3
int 0x10

xchg bx, bx
; 初始化寄存器
mov ax, 0
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x7c00

; 将 si 指向字符串首地址
mov si, string
call print
; 阻塞
jmp $

; 编写 print 函数 ah = 黑底白字 al = 字符 ，调用int 0x10
print:
    mov ah, 0x0e
.next:
    mov al, [si]
    cmp al, 0  ; jump if zero zf位为0则跳转到.done （既：字符串输出完成）
    jz .done ; if(al == 0) { jmp .done;}
    int 0x10
    inc si  ; 将si 指向下一个字符 si++
    jmp .next
.done:
    ret
string:
    db "booting print...",10,13,0 ; 10 = \n, 13 = \r, 0 = end

; 填充 510个字节
times 510 - ($ - $$) db 0

; 最后两个字节为 0x55aa
; dw 0xaa55
db 0x55,0xaa
